home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Programming / GMS / GMSDev / Source / E / Screens / ScrollScreen.e < prev    next >
Encoding:
Text File  |  1998-03-16  |  1.9 KB  |  60 lines

  1. /* Name:      Scroll Screen
  2. ** Author:    Paul Manias
  3. ** Copyright: DreamWorld Productions (c) 1996-1998.  Freely distributable.
  4. **
  5. ** This demo allows you to legally scroll up to 50 screens in either
  6. ** direction by setting the HBUFFER flag.  Normally we would blit blocks down
  7. ** the left and right hand side to give an impression of heaps of screens -
  8. ** see the MapEditor for this.
  9. **
  10. */
  11.  
  12. MODULE 'gms/dpkernel','gms/dpkernel/dpkernel','gms/graphics/pictures'
  13. MODULE 'gms/files/files','gms/screens','gms/system/register','gms/system/modules'
  14. MODULE 'gms/input/joydata','gms/graphics/screens','gms/graphics/blitter'
  15.  
  16. PROC main()
  17.   DEF screen    = NIL:PTR TO screen,
  18.       joy       = NIL:PTR TO joydata,
  19.       pic       = NIL:PTR TO picture,
  20.       scrmodule = NIL:PTR TO module,
  21.       picfile:filename
  22.  
  23.   picfile := [ ID_FILENAME, 'GMS:demos/data/PIC.Green']:filename
  24.  
  25.   IF dpkbase := OpenLibrary('GMS:libs/dpkernel.library',0)
  26.      IF (scrmodule := Init([TAGS_MODULE,NIL,
  27.          MODA_NUMBER,    MOD_SCREENS,
  28.          MODA_TABLETYPE, JMP_AMIGAE,
  29.          TAGEND], NIL))
  30.  
  31.         scrbase := scrmodule.modbase
  32.  
  33.         IF (pic := Load(picfile, ID_PICTURE))
  34.            screen := Get(ID_SCREEN)
  35.            CopyStructure(pic,screen)
  36.            screen.attrib  := SCR_HSCROLL OR SCR_SBUFFER
  37.            screen.bitmap.width := screen.width+16
  38.  
  39.            IF (screen := Init(screen,NIL))
  40.               Copy(pic.bitmap,screen.bitmap)
  41.               IF (joy := Init(Get(ID_JOYDATA),NIL))
  42.                  Show(screen)
  43.                  REPEAT
  44.                     Query(joy)
  45.                     SetBmpOffsets(screen, screen.bmpxoffset+joy.xchange, screen.bmpyoffset)
  46.                     WaitVBL()
  47.                  UNTIL !(joy.buttons AND JD_LMB)
  48.               Free(joy)
  49.               ENDIF
  50.            ENDIF
  51.         Free(screen)
  52.         Free(pic)
  53.         ENDIF
  54.      Free(scrmodule)
  55.      ENDIF
  56.   CloseDPK()
  57.   ENDIF
  58. ENDPROC
  59.  
  60.